home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / serien / purity / nr.15 / kickpascal-programme / gbu / gbu1.p < prev    next >
Text File  |  1995-04-22  |  10KB  |  349 lines

  1.  
  2.  
  3.  
  4. PROGRAM uline_demo;
  5.  
  6. USES Intuition;
  7.  
  8. TYPE ImageFeld=ARRAY[1..18]OF LONG;
  9.      Strtyp=STRING[100];
  10.  
  11. CONST SELFLAGS:=GADGHIMAGE+GADGIMAGE+SELECTED;
  12.       NORFLAGS:=GADGHIMAGE+GADGIMAGE;
  13.  
  14. VAR win3:p_window;STATIC;
  15.     BImage1,BImage2:Image;STATIC;
  16.     Buttonptr1,Buttonptr2:^ImageFeld;STATIC;
  17.     MessagePtr1: p_IntuiMessage;STATIC;
  18.     aktgad:p_gadget;STATIC;
  19.     akt,ende:BOOLEAN;STATIC;
  20.     Txtinfo11:STRINGINFO;STATIC;
  21.     Puffer11:String;STATIC;
  22.     ok:LONG;STATIC;
  23.     gads:ARRAY[1..13] OF GADGET;STATIC;
  24.     txts:ARRAY[1..13] OF INTUITEXT;STATIC;
  25.     lauf:INTEGER;STATIC;
  26.  
  27.  
  28. PROCEDURE umrandung(wo:p_window,c1,c2,x,y,b,h:INTEGER);
  29.  
  30.  TYPE umrandungstyp=ARRAY[0..9] OF INTEGER;
  31.  VAR Feld1,feld2:umrandungstyp;
  32.      border1,border2:BORDER;
  33.  
  34.  BEGIN
  35.   feld1:=umrandungstyp(1,1,1,h-2,0,h-1,0,0,b-2,0);
  36.   feld2:=umrandungstyp(b-2,h-2,b-2,1,b-1,0,b-1,h-1,1,h-1);
  37.   Border1:=Border(x,y,c1,0,0,5,^Feld1,^Border2);
  38.   Border2:=Border(x,y,c2,0,0,5,^Feld2,Nil);
  39.   drawborder(wo^.rport,^Border1,0,0);
  40.  END;
  41.  
  42.  
  43. PROCEDURE gbord(wo:p_window,was:p_gadget);
  44.  BEGIN
  45.   umrandung(wo,2,1,was^.Leftedge,was^.Topedge,was^.Width,was^.height);
  46.  END;
  47.  
  48. PROCEDURE zeichnetext(c1,c2:SHORT,wo:p_window,x,y:INTEGER,text:strtyp);
  49.  VAR it1,it2:INTUITEXT;STATIC;
  50.  BEGIN
  51.   it1:=INTUITEXT(c1,0,JAM2,1,1,NIL,text,^it2);
  52.   it2:=INTUITEXT(c2,0,0,0,0,NIL,text,NIL );
  53.   PRINTITEXT(wo^.rport,^it1,x,y);
  54.  END;
  55.  
  56. PROCEDURE uline(wo:p_window,was:p_gadget,c:CHAR);
  57.  VAR  it:intuitext;STATIC;
  58.       x,y:LONG;STATIC;
  59.       stelle:INTEGER;
  60.  
  61.  BEGIN
  62.  IF was^.Gadgettext<> NIL THEN
  63.   BEGIN
  64.    stelle:=POS(c,was^.gadgettext^.itext);
  65.    If stelle>0 THEN
  66.    BEGIN
  67.     stelle:=stelle-1;
  68.     x:=was^.Gadgettext^.leftedge+was^.Leftedge+8*stelle;
  69.     y:=was^.Gadgettext^.topedge+was^.Topedge+1;
  70.     it:=INTUITEXT(1,0,0,0,0,NIL,'_',NIL );
  71.     PRINTITEXT(wo^.rport,^it,x,y);
  72.    END;
  73.   END;
  74.  END;
  75.  
  76. PROCEDURE gbu(wo:p_window,was:p_gadget,c:CHAR);
  77.  BEGIN
  78.   gbord(wo,was);
  79.   uline(wo,was,c);
  80.  END;
  81.  
  82. PROCEDURE stringumrandung(wo:p_window,c1,c2,x,y,b,h:WORD);
  83.  BEGIN
  84.   umrandung(wo,c1,c2,x,y,b,h);
  85.   umrandung(wo,c2,c1,x-2,y-1,b+4,h+2);
  86.  END;
  87.  
  88. PROCEDURE p1;
  89.  BEGIN
  90.   gads[1].Flags:=SELFLAGS;
  91.   gads[2].Flags:=NORFLAGS;
  92.   gads[3].Flags:=NORFLAGS;
  93.   gads[4].Flags:=NORFLAGS;
  94.   gads[5].Flags:=NORFLAGS;
  95.   REFRESHGADGETS(win3^.firstgadget,win3,NIL);
  96.  END;
  97.  
  98. PROCEDURE p2;
  99.  BEGIN
  100.   gads[1].Flags:=NORFLAGS;
  101.   gads[2].Flags:=SELFLAGS;
  102.   gads[3].Flags:=NORFLAGS;
  103.   gads[4].Flags:=NORFLAGS;
  104.   gads[5].Flags:=NORFLAGS;
  105.   REFRESHGADGETS(win3^.firstgadget,win3,NIL);
  106.  END;
  107.  
  108. PROCEDURE p3;
  109.  BEGIN
  110.   gads[1].Flags:=NORFLAGS;
  111.   gads[2].Flags:=NORFLAGS;
  112.   gads[3].Flags:=SELFLAGS;
  113.   gads[4].Flags:=NORFLAGS;
  114.   gads[5].Flags:=NORFLAGS;
  115.   REFRESHGADGETS(win3^.firstgadget,win3,NIL);
  116.  END;
  117.  
  118. PROCEDURE p4;
  119.  BEGIN
  120.   gads[1].Flags:=NORFLAGS;
  121.   gads[2].Flags:=NORFLAGS;
  122.   gads[3].Flags:=NORFLAGS;
  123.   gads[4].Flags:=SELFLAGS;
  124.   gads[5].Flags:=NORFLAGS;
  125.   REFRESHGADGETS(win3^.firstgadget,win3,NIL);
  126.  END;
  127.  
  128. PROCEDURE p5;
  129.  BEGIN
  130.   gads[1].Flags:=NORFLAGS;
  131.   gads[2].Flags:=NORFLAGS;
  132.   gads[3].Flags:=NORFLAGS;
  133.   gads[4].Flags:=NORFLAGS;
  134.   gads[5].Flags:=SELFLAGS;
  135.   REFRESHGADGETS(win3^.firstgadget,win3,NIL);
  136.  END;
  137.  
  138. PROCEDURE p6;
  139.  BEGIN
  140.   gads[6].Flags:=SELFLAGS;
  141.   gads[7].Flags:=NORFLAGS;
  142.   REFRESHGADGETS(win3^.firstgadget,win3,NIL);
  143.  END;
  144.  
  145. PROCEDURE p7;
  146.  BEGIN
  147.   gads[6].Flags:=NORFLAGS;
  148.   gads[7].Flags:=SELFLAGS;
  149.   REFRESHGADGETS(win3^.firstgadget,win3,NIL);
  150.  END;
  151.  
  152. PROCEDURE p8;
  153.  BEGIN
  154.   gads[8].Flags:=SELFLAGS;
  155.   gads[9].Flags:=NORFLAGS;
  156.   REFRESHGADGETS(win3^.firstgadget,win3,NIL);
  157.  END;
  158.  
  159. PROCEDURE p9;
  160.  BEGIN
  161.   gads[8].Flags:=NORFLAGS;
  162.   gads[9].Flags:=SELFLAGS;
  163.   REFRESHGADGETS(win3^.firstgadget,win3,NIL);
  164.  END;
  165.  
  166.  
  167. PROCEDURE p10;
  168.  BEGIN
  169.   IF (gads[10].Flags AND SELECTED) <> 0 THEN gads[10].Flags:=NORFLAGS
  170.                                         ELSE gads[10].Flags:=SELFLAGS;
  171.   REFRESHGADGETS(win3^.firstgadget,win3,NIL);
  172.  END;
  173.  
  174. { ***************************************************************}
  175.  
  176. BEGIN
  177.  win3:=Open_Window(150,70,290,110,1,
  178.       _CLOSEWINDOW+GADGETUP+GADGETDOWN+VANILLAKEY,
  179.       WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE,
  180.       'Røgerdat! Datensatz suchen',NIL,50,50,640,256);
  181.  
  182.  gads[1]:=GADGET(NIL,20,15,17,9,NORFLAGS,RELVERIFY+TOGGLESELECT,
  183.                  BOOLGADGET,^BImage1,^BImage2,^txts[1],0,NIL,1,NIL);
  184.  txts[1]:=INTUITEXT(1,0,0,25,1,NIL,'Vorname',NIL);
  185.  uline(win3,^gads[1],'V');
  186.  gads[2]:=GADGET(NIL,20,25,17,9,SELFLAGS,RELVERIFY+TOGGLESELECT,
  187.                  BOOLGADGET,^BImage1,^BImage2,^txts[2],0,NIL,2,NIL);
  188.  txts[2]:=INTUITEXT(1,0,0,25,1,NIL,'Name',NIL);
  189.  uline(win3,^gads[2],'N');
  190.  gads[3]:=GADGET(NIL,20,35,17,9,NORFLAGS,RELVERIFY+TOGGLESELECT,
  191.                  BOOLGADGET,^BImage1,^BImage2,^txts[3],0,NIL,3,NIL);
  192.  txts[3]:=INTUITEXT(1,0,0,25,1,NIL,'Ort',NIL);
  193.  uline(win3,^gads[3],'O');
  194.  gads[4]:=GADGET(NIL,20,45,17,9,NORFLAGS,RELVERIFY+TOGGLESELECT,
  195.                  BOOLGADGET,^BImage1,^BImage2,^txts[4],0,NIL,4,NIL);
  196.  txts[4]:=INTUITEXT(1,0,0,25,1,NIL,'Straße',NIL);
  197.  uline(win3,^gads[4],'r');
  198.  gads[5]:=GADGET(NIL,20,55,17,9,NORFLAGS,RELVERIFY+TOGGLESELECT,
  199.                  BOOLGADGET,^BImage1,^BImage2,^txts[5],0,NIL,5,NIL);
  200.  txts[5]:=INTUITEXT(1,0,0,25,1,NIL,'Telefon',NIL);
  201.  uline(win3,^gads[5],'T');
  202. {**********}
  203.  gads[6]:=GADGET(NIL,130,15,17,9,NORFLAGS,RELVERIFY+TOGGLESELECT,
  204.                  BOOLGADGET,^BImage1,^BImage2,^txts[6],0,NIL,6,NIL);
  205.  txts[6]:=INTUITEXT(1,0,0,25,1,NIL,'innerhalb',NIL);
  206.  uline(win3,^gads[6],'i');
  207.  gads[7]:=GADGET(NIL,130,25,17,9,SELFLAGS,RELVERIFY+TOGGLESELECT,
  208.                   BOOLGADGET,^BImage1,^BImage2,^txts[7],0,NIL,7,NIL);
  209.  txts[7]:=INTUITEXT(1,0,0,25,1,NIL,'genau',NIL);
  210.  uline(win3,^gads[7],'g');
  211. {*********}
  212.  
  213.  gads[8]:=GADGET(NIL,130,35,17,9,NORFLAGS,RELVERIFY+TOGGLESELECT,
  214.                   BOOLGADGET,^BImage1,^BImage2,^txts[8],0,NIL,8,NIL);
  215.  txts[8]:=INTUITEXT(1,0,0,25,1,NIL,'von Anfang',NIL);
  216.  uline(win3,^gads[8],'A');
  217.  gads[9]:=GADGET(NIL,130,45,17,9,SELFLAGS,RELVERIFY+TOGGLESELECT,
  218.                   BOOLGADGET,^BImage1,^BImage2,^txts[9],0,NIL,9,NIL);
  219.  txts[9]:=INTUITEXT(1,0,0,25,1,NIL,'nächster',NIL);
  220.  uline(win3,^gads[9],'ä');
  221. {*********}
  222.  gads[10]:=GADGET(NIL,130,55,17,9,SELFLAGS,RELVERIFY+TOGGLESELECT,
  223.                   BOOLGADGET,^BImage1,^BImage2,^txts[10],0,NIL,10,NIL);
  224.  txts[10]:=INTUITEXT(1,0,0,25,1,NIL,'Ignorieren G/k',NIL);
  225.  uline(win3,^gads[10],'e');
  226. {***************}
  227.  
  228.  gads[11]:=GADGET(NIL,110,72,156,10,GADGHCOMP,RELVERIFY,
  229.                   STRGADGET,NIL,NIL,^txts[11],0,^txtinfo11,11,NIL);
  230.  txts[11]:=INTUITEXT(1,0,0,-90,0,NIL,'Suchstring',NIL);
  231.  uline(win3,^gads[11],'u');
  232.  Txtinfo11:=StringInfo(^Puffer11,NIL,0,80,0,0,0,0,0,0,NIL,0,NIL);
  233.  Puffer11:='';
  234.  stringumrandung(win3,1,2,106,70,158,12);
  235.  
  236. {****************}
  237.  gads[12]:=GADGET(NIL,20,90,100,13,GADGHCOMP,RELVERIFY,
  238.                   BOOLGADGET,NIL,NIL,^txts[12],0,NIL,12,NIL);
  239.  txts[12]:=INTUITEXT(1,0,0,35,2,NIL,'Quit',NIL);
  240.  gbu(win3,^gads[12],'Q');
  241.  gads[13]:=GADGET(NIL,166,90,100,13,GADGHCOMP,RELVERIFY,
  242.                   BOOLGADGET,NIL,NIL,^txts[13],0,NIL,13,NIL);
  243.  txts[13]:=INTUITEXT(1,0,0,25,2,NIL,'Suchen',NIL);
  244.  gbu(win3,^gads[13],'S');
  245.  
  246.  Buttonptr1:=PTR(ALLOC_MEM(SizeOf(ImageFeld),2));
  247.  Buttonptr1^:=ImageFeld(%00000000000000100000000000000000,
  248.                      %00000000000000110000000000000000,
  249.                      %00000000000000011000000000000000,
  250.                      %00000000000000011000000000000000,
  251.                      %00000000000000011000000000000000,
  252.                      %00000000000000011000000000000000,
  253.                      %00000000000000011000000000000000,
  254.                      %00000000000000110000000000000000,
  255.                      %00011111111111100000000000000000,
  256.  
  257. { 2. Bitplane }      %00111111111111000000000000000000,
  258.                      %01100000000000000000000000000000,
  259.                      %11000000000000000000000000000000,
  260.                      %11000000000000000000000000000000,
  261.                      %11000000000000000000000000000000,
  262.                      %11000000000000000000000000000000,
  263.                      %11000000000000000000000000000000,
  264.                      %01100000000000000000000000000000,
  265.                      %00100000000000000000000000000000);
  266.  
  267.  Buttonptr2:=PTR(ALLOC_MEM(SizeOf(ImageFeld),2));
  268.  Buttonptr2^:=ImageFeld(%00111111111111000000000000000000,
  269.                      %01100000000000000000000000000000,
  270.                      %11000111111100000000000000000000,
  271.                      %11001111111110000000000000000000,
  272.                      %11001111111110000000000000000000,
  273.                      %11001111111110000000000000000000,
  274.                      %11000111111100000000000000000000,
  275.                      %01100000000000000000000000000000,
  276.                      %00100000000000000000000000000000,
  277.  
  278. { 2. Bitplane }      %00000000000000100000000000000000,
  279.                      %00000000000000110000000000000000,
  280.                      %00000111111100011000000000000000,
  281.                      %00001111111110011000000000000000,
  282.                      %00001111111110011000000000000000,
  283.                      %00001111111110011000000000000000,
  284.                      %00000111111100011000000000000000,
  285.                      %00000000000000110000000000000000,
  286.                      %00011111111111100000000000000000);
  287.  
  288. BImage1:=IMAGE(0,0,17,9,2,Buttonptr1,3,0,NIL);
  289. BImage2:=IMAGE(0,0,17,9,2,Buttonptr2,3,0,NIL);
  290.  
  291. ende:=FALSE;
  292.  
  293. FOR lauf:=1 TO 13 DO ok:=ADDGADGET(win3,^gads[lauf],0);
  294.  
  295. REFRESHGADGETS(win3^.firstgadget,win3,NIL);
  296. akt:=activategadget(^gads[2],win3,NIL);
  297. REPEAT
  298.  MessagePtr1:=p_Intuimessage(Waitport(win3^.Userport));
  299.  MessagePtr1:=p_Intuimessage(GetMsg(win3^.Userport));
  300.  CASE MessagePtr1^.class OF
  301.   _CLOSEWINDOW: ende:=TRUE;
  302.   GADGETUP,GADGETDOWN:
  303.    BEGIN
  304.     aktgad:=messageptr1^.iaddress;
  305.     CASE aktgad^.gadgetID OF
  306.       1:p1;
  307.       2:p2;
  308.       3:p3;
  309.       4:p4;
  310.       5:p5;
  311.       6:p6;
  312.       7:p7;
  313.       8:p8;
  314.       9:p9;
  315.       12:ende:=TRUE;
  316.       13:;
  317.      OTHERWISE
  318.      END;
  319.    END;
  320.   VANILLAKEY:
  321.    CASE messageptr1^.code OF
  322.     86,118: p1;
  323.     78,110: p2;
  324.     79,111: p3;
  325.     82,114: p4;
  326.     84,116: p5;
  327.     73,105: p6;
  328.     71,103: p7;
  329.     65,97 : p8;
  330.     196,228:p9;
  331.     69,101: p10;
  332.     85,117: akt:=activategadget(^gads[11],win3,NIL);
  333.     83,115: {suchen};
  334.     27,81,113: ende:=TRUE;
  335.     OTHERWISE;
  336.    END;
  337.   OTHERWISE;
  338.  END;             {OF CASE}
  339.  ReplyMsg(p_Message(MessagePtr1));
  340. UNTIL ende;
  341. Closewindow(win3);
  342. Free_Mem(LONG(Buttonptr1),SizeOf(ImageFeld));
  343. Free_Mem(LONG(Buttonptr2),SizeOf(ImageFeld));
  344. END.
  345.  
  346.  
  347.  
  348.  
  349.